package cn.com.forever.array;
/*
    旋转数组的最小数字
    把一个数组最开始的若干个元素搬到数组的末尾，我们称之为数组的旋转。
    输入一个非递减排序的数组的一个旋转，输出旋转数组的最小元素。
    NOTE：给出的所有元素都大于0，若数组大小为0，请返回0。
 */
public class MinNumberInRotateArray {
    public static void main(String[] args) {
        int[] array = {2,2,1,2,2,2};
        System.out.println(minNumberInRotateArray(array));
    }

    public static int minNumberInRotateArray(int[] array){
        if(array.length == 0){
            return 0;
        }
        int begin = 0;
        int end = array.length - 1;
        int min = array[end];
        while(begin < end){
            int mid = (begin + end) /2;
            if(array[mid] > min){
                begin = mid + 1;
            }
            else if(array[mid] < min){
                end = mid;
            }
            else{
                end--;
            }
        }
        return array[begin];
    }
}
